#ifndef AVALON_SHUTTLEDATETIME_HPP
#define AVALON_SHUTTLEDATETIME_HPP
#include <boost/date_time/posix_time/posix_time.hpp>
#include "Avalon/Serialization/DataShuttle.hpp"

namespace Avalon {
namespace Serialization {

  //! Shuttles a boost::posix_time::ptime::date_type.
  /*!
    \param shuttle The DataShuttle to use.
    \param value The value to shuttle.
    \param version The class version being serialized.
  */
  template<>
  void Shuttle(DataShuttle* shuttle, boost::posix_time::ptime::date_type& value,
    unsigned int version);

  //! Shuttles a boost::posix_time::ptime::time_duration_type.
  /*!
    \param shuttle The DataShuttle to use.
    \param value The value to shuttle.
    \param version The class version being serialized.
  */
  template<>
  void Shuttle(DataShuttle* shuttle,
    boost::posix_time::ptime::time_duration_type& value, unsigned int version);

  //! Shuttles a boost::posix_time::ptime.
  /*!
    \param shuttle The DataShuttle to use.
    \param value The value to shuttle.
    \param version The class version being serialized.
  */
  template<>
  void Shuttle(DataShuttle* shuttle, boost::posix_time::ptime& value,
    unsigned int version);
}
}

#endif // AVALON_SHUTTLEDATETIME_HPP
